
# Function
snippet func
	func ${1:function_name}(${2}) ${3:rtype} {
		${4:/* code */}
	}//$1()
snippet meth 
	func (${1:owner_obj}) ${2:function_name}(${3:params}) ${4:rtype} {
		${5:/* code */}
	}//$2()
snippet if
	if ${1:/* condition */} {
		${2:/* code */}
	}${3}
snippet pkg
	package ${1:pkgname}
snippet imp
	import "${1:pkgname}"
snippet imps
	import (
		"${1:pkg1name}"
		"${2:pkg2name}"${3}
	)
snippet var 
	var	${1:vname} ${2:vtype} ${3}
snippet vars
	var (
		"${1:pkg1name}"
		"${2:pkg2name}"${3}
	)
snippet const
	const ${1:cname} = ${2:cval}
snippet consts
	const (
		${1:cname} = ${2:cval}
		${3:cname} = ${4:cval}${5}
	)
snippet map
	map[${1:keytype}] ${2:valtype}
snippet pf
	fmt.Printf(${1:fmt}, ${2:args})
snippet spf
	fmt.Sprintf(${1:fmt}, ${2:args})
snippet vspf
	${1:vname} = fmt.Sprintf(${2:fmt}, ${3:args})
snippet ifok
	if ${1:_}, ok := ${2:thing_to_check}; ok {
		${3}
	}
snippet pf
	fmt.Printf("${1:fmt}\n", ${2:args})
snippet fpf
	fmt.Fprintf(${1:stream}, "${2:fmt}\n", ${3:args})
snippet spf
	fmt.Sprintf("${1:fmt}\n", ${2:args})
snippet vspf
	${1:vname} = fmt.Sprintf("${2:fmt}\n", ${3:args})
snippet iface
	type ${1:name} interface {
		${2:/* code */}
	}//interface:$1
snippet for
	for ${1:init;} ${2:cond;} ${3:post;} {
	}
snippet struct
	type ${1:struct_name} struct {
		${2}
	}
snippet enum
	const (
		${1:vname} = iota
	)
